package nsu.edu.zsq.service.teacher;

import java.util.List;

import com.github.pagehelper.PageInfo;

import nsu.edu.zsq.bean.StuScore;
import nsu.edu.zsq.param.PageQuery;
import nsu.edu.zsq.param.StuScoreParam;
import nsu.edu.zsq.param.TchCourseParam;

/** 
* Description: 教师课程成绩管理的service类<br>
*/
public interface CourseScoreService {

    /**
     * 获取一条学生课程成绩信息
     * @param id 学生课程成绩id
     * @return StuScore
     */
    public StuScore getStuScore(int id);
    
    /**
     * 获取教师教授的主修课程信息
     * @return List<TchCourseParam>
     */
    public List<TchCourseParam> listMajorTchCourse();
    
    /**
     * 根据班级id，获取班级中所有学生成绩信息
     * @param classId 班级id
     * @param courseNo 课程代码
     * @param pageQuery 分页信息
     * @return PageInfo<StuScoreParam>
     */
    public PageInfo<StuScoreParam> listStuScoreByClassId(int classId, String courseNo, PageQuery pageQuery);

    /**
     * 保存一条学生课程成绩信息（成绩不过60分的，自动设置补考标记）
     * @param stuScore 学生课程成绩信息
     */
    public void saveStuScore(StuScore stuScore);

    /**
     * 获取教师教授的选修课程信息
     * @return List<TchCourseParam>
     */
    public List<TchCourseParam> listMinorTchCourse();

    /**
     * 根据教师课程id获取选修课学生成绩信息
     * @param tchCourseId 教师课程id
     * @param pageQuery 分页信息
     * @return PageInfo<StuScoreParam>
     */
    public PageInfo<StuScoreParam> listStuScoreByTchCourseId(int tchCourseId, PageQuery pageQuery);

    /**
     * 获取该教师所授课程下需要补考的学生成绩信息
     * @param pageQuery 分页信息
     * @return PageInfo<StuScoreParam>
     */
    public PageInfo<StuScoreParam> listResitStuScore(PageQuery pageQuery);

    /**
     * 更新学生课程的补考成绩
     * @param stuScore 学生课程成绩信息
     */
    public void updateResitScore(StuScore stuScore);

    /**
     * 获取该教师所授课程下需要重修的学生成绩信息
     * @param pageQuery 分页信息
     * @return PageInfo<StuScoreParam>
     */
    public PageInfo<StuScoreParam> listRetakeStuScore(PageQuery pageQuery);

    /**
     * 更新学生课程的重修成绩
     * @param stuScore 学生课程成绩信息
     */
    public void updateRetakeScore(StuScore stuScore);

    /**
     * 获取该教师授课中学生重修的课程
     * @return List<StuScoreParam>
     */
    public List<StuScoreParam> listRetakeCourse();

    /**
     * 获取重修课程中的学生列表
     * @param tchCourseId 教师课程id
     * @return List<StuScoreParam>
     */
    public List<StuScoreParam> listRetakeStudentByTchCourseId(int tchCourseId);

}
